package object;

public class IntegerDemo {
    public static void main(String[] args) {

        //触发了自动装箱特性,会被编译为:Integer i = Integer.valueOf(5)
        Integer i = 5 ;//基本类型到包装类-----装箱
        //触发了自动拆箱特性,会被编译为: int j = i.intValue();
        int j = i;//包装类到基本类型-----拆箱


        //演示包装类的常用操作
        //1)可以通过包装类来获取基本类型的取值范围
        int max = Integer.MAX_VALUE;//获取int的最大值
        int min = Integer.MIN_VALUE;//获取int的最小值
        System.out.println("int的最大值是:"+max+",最小值是:"+min);

        long max1 = Long.MAX_VALUE;//获取long的最大值
        long min1 = Long.MIN_VALUE;//获取long的最小值
        System.out.println("long的最大值是:"+max1+",最小值是:"+min1);

        //2)包装类可以将字符串转换为队友的基本类型---必须熟练掌握(和valueOf相反)
        String s1 = "39";
        int age = Integer.parseInt(s1);//将字符串s1转换为int类型并赋值给age
        System.out.println(age);//39---int类型

        String s2 = "123.456";
        double price = Double.parseDouble(s2);//将字符串s1转换为double类型并赋值给price
        System.out.println(price);//123.456---double类型






        Integer i1 = new Integer(500);
        Integer i2 = new Integer(500);
        System.out.println(i1==i2);//false,比较的是地址
        System.out.println(i1.equals(i2));//true,包装类重写了equals()

        //valueOf()方法会复用1个字节(-128-127)范围内的数据,建议使用valueOf()
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5);
        System.out.println(i3==i4);//true,因为在范围内复用了,还是原来的地址,超过范围就是false
        System.out.println(i3.equals(i4));//true,包装类重写了equals()

        //将包装类转为基本类型
        int o = i4.intValue();
        System.out.println(o);

        Double d5 = new Double(1.23);
        double d = d5.doubleValue();
        System.out.println(d);



    }
}
